package net.pm.common.toolkit;

import java.io.UnsupportedEncodingException;

/**字符串工具类
 */
public abstract class StringUtils {
	/**默认的空值
	 */
	public static final String EMPTY = "";
	
	/**检查字符串是否为空
	 * @param str　字符串
	 * @return
	 */
	public static boolean isEmpty(String str){
		if(str == null){
			return true;
		}else if(str.length() == 0){
			return true;
		}else{
			return false;
		}
	}
	
	/**检查字符串是否为空
	 * @param str　字符串
	 * @return
	 */
	public static boolean isNotEmpty(String str){
		return !isEmpty(str);
	}
	
	/**截取并保留标志位之前的字符串
	 * @param str   字符串
	 * @param expr  分隔符
	 * @return
	 */
	public static String substringBefore(String str,String expr){
		if(isEmpty(str) || expr == null){
			return str;
		}
		if(expr.length() == 0){
			return EMPTY;
		}
		int pos = str.indexOf(expr);
		if(pos == -1){
			return str;
		}
		return str.substring(0,pos);
	}
	
	/**截取并保留标志位之后的字符串
	 * @param str   字符串
	 * @param expr  分隔符
	 * @return
	 */
	public static String substringAfter(String str,String expr){
		if(isEmpty(str) || expr == null){
			return str;
		}
		int len = expr.length();
		if(len == 0){
			return EMPTY;
		}
		int pos = str.indexOf(expr);
		if(pos == -1){
			return str;
		}
		return str.substring(pos+len);
	}
	
	/**截取并保留最后一个标志之前的字符串
	 * @param str   字符串
	 * @param expr　分隔符
	 * @return
	 */
	public static String substringBeforeLast(String str,String expr){
		if(isEmpty(str) || isEmpty(expr)){
			return str;
		}
		int pos = str.lastIndexOf(expr);
		if(pos == -1){
			return str;
		}
		return str.substring(0,pos);
	}
	
	/**截取并保留最后一个标志之后的字符串
	 * @param str
	 * @param expr
	 * @return
	 */
	public static String substringAfterLast(String str,String expr){
		if(isEmpty(str) || expr == null){
			return str;
		}
		int len = expr.length();
		if(len == 0){
			return EMPTY;
		}
		int pos = str.lastIndexOf(expr);
		if(pos == -1 || pos == (str.length() - len)){
			return EMPTY;
		}
		return str.substring(pos + len);
	}
	
	/**把字符串按分隔符转换为数组
	 * @param str	字符串
	 * @param expr	分隔符
	 * @return
	 */
	public static String[] stringToArray(String str,String expr){
		return str.split(expr);
	}
	
	/**去除字符串中的空格
	 * @param str
	 * @return
	 */
	public static String noSpace(String str){
		str = str.trim();
		str = str.replace(" ", "_");
		return str;
	}
	
	/**将第一个字母变成小写
	 * @param str
	 * @return
	 */
	public static String firstLetterToLower(String str){
		return new StringBuilder(str.length())
				.append(Character.toLowerCase(str.charAt(0)))
				.append(str.substring(1)).toString();
		 
	}
	
	/**转换成utf-8编码
	 * @param str
	 * @return
	 */
	public static String encode_utf8(String str) {
		try {
			str = new String(str.getBytes("utf-8"), "ISO-8859-1");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return str;
	}
	
}
